SnowflakeでMFAが無効なユーザー一覧を出してみた #SnowflakeDB
※本エントリは、Snowflakeをもっと使いこなそう! Advent Calendar 2022の18日目の記事となります。
さがらです。
SnowflakeでMFAが無効なユーザー一覧を出してみたので、その内容をまとめてみます。
SnowflakeにおけるMFA
まずMFAについてですが、Multi-Factor Authenticationの略称で、ユーザーがログインする際にIDとパスワードだけでなく、別の要素(例:ワンタイムパスワード、指紋認証、etc)も必要とすることでそのユーザーのセキュリティをより強固にすることが出来ます。
SnowflakeでもMFAに対応しており、特にACCOUNTADMINのロールを持つユーザーについては公式からもMFAの適用を強く推奨されています。
MFAの登録手順については、下記の弊社ブログや公式Docをご確認ください。
そんなセキュリティ上大事なMFAの機能ですが、「どうやってMFAを有効化していないユーザー一覧を出力すればいいのか」気になる方もいると思います。
本記事ではこの「MFAを有効化していないユーザー一覧を出力」する方法について、2つ記します。
方法その1
まず1つ目は、ACCOUNT_USAGE
スキーマのUSERS
ビューを使う方法です。
このUSERS
ビューにはEXT_AUTHN_DUO
というカラムがあり、このカラムでは「対象のレコードのユーザーがMFAを有効化している場合はtrue
、MFAを有効化していない場合にはfalse
」という値を保持します。
そのため、下記のようにwhere EXT_AUTHN_DUO = 'false'
と絞り込んだクエリを発行することで、MFAを有効化していないユーザー一覧を出力可能です。
select name, email, ext_authn_duo from snowflake.account_usage.users where EXT_AUTHN_DUO = 'false';
方法その2
先程記した方法その1ですが、ACCOUNT_USAGE
スキーマのUSERS
ビューは更新までに最大2時間かかる可能性があります。そのため、直近2時間以内に作成・情報変更したユーザーについては正しい情報が出力出来ない可能性があります。
そこで、少しだけ手間ですがshow users
コマンドとRESULT_SCAN
関数を用いて、最新のユーザー情報からMFAを有効化していないユーザー一覧を出力してみます。
行うこととしては、以下のようなクエリを発行すればOKです。show users
コマンドの後にRESULT_SCAN
関数を使うことで、show users
コマンドで出力された最新のユーザー情報に対して絞り込みを行うことが出来ます。
show users
コマンドで出力されるデータにもEXT_AUTHN_DUO
というカラムがあるため、方法その1と同じ様に値がfalse
の場合のみに絞り込むことで、最新のユーザー情報からMFAを有効化していないユーザー一覧を出力可能です。
show users; select "name", "email", "ext_authn_duo" from table(result_scan(last_query_id())) where "ext_authn_duo" = 'false';
最後に
SnowflakeでMFAが無効なユーザー一覧を出す方法について2つまとめてみました。
定期的なユーザー管理の際に使えると思いますので、ぜひご活用ください!